module.exports = (app) => {
  const { Schema, createModel, getModelName, formatDate, pre } = app.jax.mongoose
  const modelName = getModelName(__filename)

  const schema = new Schema({
    organizeName: String, // 组织名称
    parentId: Schema.Types.ObjectId, // 上级ID
    systemType: { type: String, default: 'admin' }, // 所属系统(请看字典)
    remark: String, // 备注

    rank: { type: Number, set: (value) => (value != '' ? Number(value) : null) }, // 序号
    isTop: { type: Boolean, default: false }, // 是否置顶，序号设置后自动置顶

    chainId: Schema.Types.ObjectId, // 链条ID(ID相同表示在同一个链条上)
    chainIds: [Schema.Types.ObjectId], // 路径ID
  })

  // 修改
  schema.pre(['updateOne', 'findOneAndUpdate', 'updateMany'], function () {
    const data = this.getUpdate()
    pre.getRank(data)
  })

  // 新增
  schema.pre('save', function () {
    pre.getRank(this)
  })

  const Model = createModel(modelName, schema)

  return Model
}
